package com.koi.system.service.menu;

import com.baomidou.mybatisplus.extension.service.IService;
import com.koi.model.bo.element.CascaderLongBo;
import com.koi.model.bo.system.SysMenuBo;
import com.koi.model.vo.base.BaseVo;
import com.koi.model.vo.system.SysMenuVo;
import com.koi.pojo.system.SysMenu;

import java.util.List;

/**
 * @author ･ᴗ･
 * @description [菜单权限表-服务实现层接口]
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * @description [查询菜单]
     * @author ･ᴗ･
     */
    List<SysMenu> listSysMenu(SysMenuVo vo);

    /**
     * @description [菜单级联下拉框]
     * @author ･ᴗ･
     */
    List<CascaderLongBo> cascaderList();

    /**
     * @description [生成当前用户所拥有菜单路由]
     * @author ･ᴗ･
     */
    List<SysMenuBo> generatorRouters();

    /**
     * @description [根据用户拥有的角色ID查询权限菜单]
     * @author ･ᴗ･
     */
    List<Long> listMenuIdsByRoleId(Long roleId);

    /**
     * @description [保存角色和菜单权限之间的关系]
     * @author ･ᴗ･
     */
    void saveRoleMenu(Long roleId, List<Long> menuIds);

    /**
     * @description [查询所有正常的路由 AND 展开节点（角色分配菜单权限使用）]
     * @author ･ᴗ･
     */
    List<SysMenu> listMenuNormal(SysMenuVo sysMenuVo);

}
